package com.ryskoo.catering.vendortemplaterel.service.flower;

import com.ryskoo.catering.producttemplateattr.domain.ProductTemplateAttrPO;
import com.ryskoo.catering.producttemplateattr.repository.IProductTemplateAttrRepository;
import com.ryskoo.catering.vendortemplaterel.domain.VendorTemplateRelPO;
import com.ryskoo.catering.vendortemplaterel.repository.IVendorTemplateRelRepository;
import com.ryskoo.catering.vendortemplatereldetail.domain.VendorTemplateRelDetailPO;
import com.ryskoo.catering.vendortemplatereldetail.repository.IVendorTemplateRelDetailRepository;
import com.ryskoo.framework.core.service.BasicServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;

@Service
@Transactional
public class FlowerVendorTemplateRelServiceImpl extends BasicServiceImpl<VendorTemplateRelPO> implements IFlowerVendorTemplateRelService {
    @Autowired
    private IVendorTemplateRelRepository vendorTemplateRelRepository;
    @Autowired
    private IVendorTemplateRelDetailRepository vendorTemplateRelDetailRepository;
    @Autowired
    private IProductTemplateAttrRepository productTemplateAttrRepository;
    @PostConstruct
    public void init(){
        this.setDao(vendorTemplateRelRepository);
    }

    @Override
    public List<VendorTemplateRelPO> getAllRelsByVendorUuid(String vendorUuid) {
        // 1.根据vendorUuid 获取 关联表uuid集合
        List<String> uuids = vendorTemplateRelRepository.getUuidsByVendorUuid(vendorUuid);
        // 2.拼装对象列表
        List<VendorTemplateRelPO> list = new ArrayList<>();
        for (String uuid:uuids) {
            // 2.1 获取主表记录
            VendorTemplateRelPO vendorTemplateRelPO = vendorTemplateRelRepository.getByUuid(uuid);

            if(!vendorTemplateRelPO.isStatus()){
                continue;
            }

            // 2.2 设置属性名称
            ProductTemplateAttrPO attrPO = productTemplateAttrRepository.getByUuid(vendorTemplateRelPO.getTemplateAttrUuid());
            vendorTemplateRelPO.setAttrName(attrPO.getName());
            vendorTemplateRelPO.setSpec(attrPO.isSpec());
            // 2.3 获取明细记录
            List<VendorTemplateRelDetailPO> details = vendorTemplateRelDetailRepository.getByMainUuid(uuid,true,true);
            vendorTemplateRelPO.setDetails(details);
            list.add(vendorTemplateRelPO);
        }

        return list;
    }
}
